//////////////////////////////////////////////////////////////////////////////////
//	File	:	BaseState
//	Author	:	Yuri Oyoko
//	Purpose	:	This is the base state from which all other game states will be 
//				derived. The state is the current screen or section the player
//				is currently interacting with, e.g. the main menu, options or 
//				the actual game play.
//////////////////////////////////////////////////////////////////////////////////
#pragma once

class BaseState
{
public:

	//Virtual destructor
	virtual ~BaseState() = 0 {}
	//Initializes any variables and loads any assests needed for this state
	virtual void Enter() = 0;
	//Releases any assets and cleans up any memory that was used in this state
	virtual void Exit() = 0;
	//Gets input from the players
	virtual bool GetInput() = 0;
	//Updates any objects used in this state
	virtual void Update(float ElapsedTime) = 0;
	//Renders any objects used in this state.
	virtual void Render() = 0;
};